public class Test {

    //在同一个类中定义多个方法：要求不仅可以求2个整数的最大值，还可以求3个小数的最大值
    //借助Java原生类Math当中的max方法求最大值
    public static int max(int a,int b){
        return Math.max(a,b);
    }

    public static double max(double a,double b,double c){
        double max = Math.max(a,b);
        return Math.max(max,c);
    }

    public static void main(String[] args) {
        System.out.println(max(1.3, 9.9, 9.6));
    }

    //求斐波那契数列的第n项。(迭代实现)
    //斐波那契数列是指这样一个数列：1，1，2，3，5，8，13，21，34，55，89……
    // 这个数列从第3项开始 ，每一项都等于前两项之和。
    public static int fab(int n){
        if (n == 1 || n == 2){
            return 1;
        }else {
            return fab(n-1) + fab(n-2);
        }
    }

    public static void main6(String[] args) {
        System.out.println(fab(3));
    }

    //求n的阶层
    public static int fac1(int n){
        int tmp = 1;
        for (int i = 1; i <= n; i++) {
            tmp *= i;
        }
        return tmp;
    }

    public static void main5(String[] args) {
        System.out.println(fac1(5));

    }

    //创建方法求两个数的最大值max2，随后再写一个求3个数的最大值的函数max3。
    //要求：在max3这个函数中，调用max2函数，来实现3个数的最大值计算
    public static int max2(int a,int b){
        /*if (a > b){
            return a;
        }else {
            return b;
        }*/
        return a > b ? a : b;
    }

    public static int max3(int a,int b,int c){
        int max = max2(a,b);
        return max > c ? max : c;
    }

    public static void main4(String[] args) {
        System.out.println(max3(7,24,8));
    }

    public static double add(double a,double b){
        return a + b;
    }

    public static int add(int a,int b,int c){
        return a + b + c;
    }

    public static int add(int a,int b){
        return a + b;
    }

    public static void main3(String[] args) {
        int sum = add(10,11);
        double sum1 = add(1.2,1.5);
        int sum2 = add(10,15,20);
        System.out.println(sum);
        System.out.println(sum1);
        System.out.println(sum2);
    }

    public static void main2(String[] args) {
        int[] arr = {10,20};
        swap(arr);
        System.out.println(arr[0]+" "+arr[1]);
    }

    public static void swap(int[] arr){
        int tmp = arr[0];
        arr[0] = arr[1];
        arr[1] = tmp;
    }

    public static int fac(int n){
        int ret = 1;
        for (int i = 1; i <= n; i++) {
            ret *= i;
        }
        return ret;
    }

    public static int facSum(int k){
        int sum = 0;
        for (int i = 1; i <= k; i++) {
            sum += fac(i);
        }
        return sum;
    }

    public static void main1(String[] args) {
        System.out.println(facSum(5));
    }
}
